﻿using System;
using System.Collections.Generic;
using Cesave.Domain.PermisosModule.Entities;

namespace Cesave.Domain.PermisosModule.Contracts.Municipios
{
	/// <summary>
	/// 
	/// </summary>
	public interface IMunicipioService
		: IDisposable
	{
		/// <summary>
		/// 
		/// </summary>
		/// <param name="estadoGuid"></param>
		/// <returns></returns>
		List<Municipio> FindMunicipiosByEstado(Guid estadoGuid);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="estadoGuid"></param>
		/// <param name="status"></param>
		/// <returns></returns>
		List<Municipio> FindMunicipiosByEstadoAndStatus(Guid estadoGuid, bool status = true);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="distritoGuid"></param>
		/// <returns></returns>
		List<Municipio> FindMunicipiosByDistrito(Guid distritoGuid);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="distritoGuid"></param>
		/// <param name="status"></param>
		/// <returns></returns>
		List<Municipio> FindMunicipiosByDistritoAndStatus(Guid distritoGuid, bool status = true);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="municipioGuid"></param>
		/// <returns></returns>
		Municipio FindMunicipioByGuid(Guid municipioGuid);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="municipio"></param>
		void AddMunicipio(Municipio municipio);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="municipio"></param>
		void ChangeMunicipio(Municipio municipio);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="municipio"></param>
		void DeleteMunicipio(Municipio municipio);
	}
}
